package org.com.system.util.sql;

import org.apache.commons.lang.StringUtils;
import org.com.system.util.model.ActionValues;

/**
 * SQL生成器，基于不同的数据库来生成标准的SQL语句
 * @author Gandilong at 2012-9-6下午03:52:58
 */
public class SQLGener {

	private SQLGener(){}
	
	 /**
     * 增加条件(该方法，适用于JdbcTemplate不适用NamedParameterJdbcTemplate)
     * 根据Model字段中的注解和ActionValues里的值，
     * 如果字段有值则会产生column_name='column_value'字符串，没有则什么也不会产生。
     * @param stber 字符串工具类(Type:StringBuffer)
     * @param values 请求参数(Type:Map)
     * @param model 实体类(Type:<E>)
     */
    public static void addWhereColumnValues(StringBuffer stber,ActionValues<String,Object> values,Class<?> model){
    	if(null!=values&&values.size()>0){
    		stber.append(" \n\tWHERE ");
    		stber.append(StringUtils.join(SQLUtils.getColumnValues(values,model,true)," AND "));
    	}
    }
	
    
    /**
     * 增加条件(该方法，适用于NamedParameterJdbcTemplate不适用JdbcTemplate)
     * @param stber 字符串工具类(Type:StringBuffer)
     * @param values 请求参数(Type:Map)
     * @param model 实体类(Type:<E>)
     */
    public static void addWhereColumnParams(StringBuffer stber,ActionValues<String,Object> values,Class<?> model,boolean colon){
    	if(null!=stber){
    		stber.append("  WHERE  ");
    		stber.append(StringUtils.join(SQLUtils.getColumnParams(model,SQLUtils.SELECT_OPERATOR,colon)," AND"));
    	}
    }
    
}
